package com.ruoyi.system.service;

import java.util.List;
import com.ruoyi.system.domain.SysMessage;
import com.ruoyi.common.core.domain.entity.SysUser;

/**
 * 消息通知Service接口
 * 
 * @author ruoyi
 */
public interface ISysMessageService
{
    /**
     * 查询消息通知
     * 
     * @param messageId 消息通知主键
     * @return 消息通知
     */
    public SysMessage selectSysMessageByMessageId(Long messageId);

    /**
     * 查询消息通知列表
     * 
     * @param sysMessage 消息通知
     * @return 消息通知集合
     */
    public List<SysMessage> selectSysMessageList(SysMessage sysMessage);

    /**
     * 新增消息通知
     * 
     * @param sysMessage 消息通知
     * @return 结果
     */
    public int insertSysMessage(SysMessage sysMessage);

    /**
     * 修改消息通知
     * 
     * @param sysMessage 消息通知
     * @return 结果
     */
    public int updateSysMessage(SysMessage sysMessage);

    /**
     * 批量删除消息通知
     * 
     * @param messageIds 需要删除的消息通知主键集合
     * @return 结果
     */
    public int deleteSysMessageByMessageIds(Long[] messageIds);

    /**
     * 删除消息通知信息
     * 
     * @param messageId 消息通知主键
     * @return 结果
     */
    public int deleteSysMessageByMessageId(Long messageId);
    
    /**
     * 标记消息为已读
     * 
     * @param messageId 消息ID
     * @return 结果
     */
    public int markAsRead(Long messageId);
    
    /**
     * 查询用户未读消息数量
     * 
     * @param userId 用户ID
     * @param userType 用户类型（1老人 2家属）
     * @return 结果
     */
    public int getUnreadCount(Long userId, String userType);
    
    /**
     * 发送余额不足提醒
     * 
     * @param user 用户信息
     * @param balance 当前余额
     * @return 结果
     */
    public void sendBalanceReminder(SysUser user, Double balance);
    
    /**
     * 发送退住通知
     * 
     * @param elderUser 老人用户
     * @param bedName 床位名称
     * @return 结果
     */
    public void sendCheckOutNotification(SysUser elderUser, String bedName);
} 